package com.zl.tby.service;

import com.zl.tby.core.base.bean.OptionType;
import com.zl.tby.core.base.bean.TbyPageResult;
import com.zl.tby.core.common.R;
import com.zl.tby.dto.TbyAnimalPlantQuery;
import com.zl.tby.model.TbyAnimalPlant;
import com.zl.tby.vo.TbyAnimalPlantForm;
import java.util.List;

/**
 * 动植物管理表 service
 * @author sunjiaxing
 * @version 1.0
 * @since 2024/8/7 23:21
 */
public interface ITbyAnimalPlantService {


    /**
     * 添加
     * @param entity: 表单信息
     * @return 保存结果
     */
    R<TbyAnimalPlant> add(TbyAnimalPlantForm entity);

    /**
     * 修改
     * @param entity: 表单信息
     * @return 修改结果
     */
    R<TbyAnimalPlant> update(TbyAnimalPlantForm entity);

    /**
     * 根据id获取对象
     * @param id: 主键id
     * @return 实体对象
     */
    TbyAnimalPlant get(Long id);

    /**
     * 根据id删除
     * @param id: 主键id
     * @return 删除结果
     */
    R<Void> delete(Long id);

    /**
     * 分页查询
     * @param query: 查询参数
     * @return 结果
     */
    TbyPageResult<TbyAnimalPlant> page(TbyAnimalPlantQuery query);

    /**
     * 列表查询
     * @param query：查询参数
     * @return 列表结果
     */
    List<TbyAnimalPlant> list(TbyAnimalPlantQuery query);

    /**
     * 获取概况一张图中能选择物种列表
     * @return 物种列表
     */
    List<TbyAnimalPlant> overviewList();

    /**
     * 下拉选数据
     * @return 结果
     */
    List<OptionType> options();

    /**
     * 获取级联的数据，物种分类和物种
     * @return 物种分类和物种的级联数据
     */
    List<OptionType> cascaderList();

    R<Boolean> checkChName(Long id, String chName);

    /**
     * 生成缩略图
     * @param id: 主键id
     */
    void createThumbnail(Long id);
}
